package addition_fr;

//START:imports
import java.util.*;
//import java.util.ArrayList; 

//import cuke4duke.annotation.I18n.FR.Soit;
//import cuke4duke.annotation.I18n.FR.Alors;
//import cuke4duke.annotation.I18n.FR.Quand;
import cuke4duke.annotation.I18n.EN.Given;

import cuke4duke.annotation.I18n.EN.When;

import cuke4duke.annotation.I18n.EN.Then;

import cuke4duke.annotation.Pending;

import static junit.framework.Assert.assertEquals;
//END:imports

@SuppressWarnings({"UnusedDeclaration"})
public class CalculScoreSteps {

    Questionnaire questionnaire = new Questionnaire();
    QuestionnaireRepondu questionnaireRepondu = null;

    @Given("^le questionnaire suivant:$")
    public void leQuestionnaireSuivantDefiniParTable(cuke4duke.Table table) {
        List<Map<String, String>> hashes = table.hashes();
        for (Map<String, String> ligne : hashes) {
            questionnaire.ajouteQuestionReponseScore(Integer.parseInt(ligne.get("numQuestion")), ligne.get("question"),
                    ligne.get("reponse possible"),
                    Integer.parseInt(ligne.get("score pour cette reponse")));
        }
    }

    @Given("^les questions additionelles suivantes:$")
    public void lesQuestionsAdditionellesSuivantesWithTable(cuke4duke.Table table) {
        List<Map<String, String>> hashes = table.hashes();
        for (Map<String, String> ligne : hashes) {
            questionnaire.ajouteQuestionReponseScoreAdditionnelle(Integer.parseInt(ligne.get("numQuestion")), ligne.get("question additionnelle"), ligne.get("reponse possible"), Integer.parseInt(ligne.get("score pour cette reponse")));
        }
    }

    @Given("^les reponses \"([^\"]*)\" pour la question (\\d+), \"([^\"]*)\" pour la question (\\d+)$")
    public void initReponses(String response1, int numQuestion1, String response2, int numQuestion2) {
        questionnaireRepondu = new QuestionnaireRepondu(questionnaire);

        questionnaireRepondu.addReponse(numQuestion1, response1);
        questionnaireRepondu.addReponse(numQuestion2, response2);
    }

    @When("^je calcule le score total$")
    public void jeCalculeLeScoreTotal() {
        questionnaireRepondu.calculScoreTotal();
    }

    @Then("^le score total devrait etre ([0-9]*)$")
    public void leScoreTotalDevraitEtre(int score_attendu) {
        assertEquals("Le calcul du score est errone", score_attendu, questionnaireRepondu.getScoreTotal());
    }

    //@Given ("^un score de base de ([0-9]*)$")
    @Given("^un score de base de \"([^\"]*)\"$")
    public void unScoreDeBaseDe(int score_base) {
        questionnaireRepondu = new QuestionnaireRepondu(questionnaire);
        questionnaireRepondu.setScoreTotal(score_base);
    }

    @Given("^la reponse \"([^\"]*)\" a la question additionnelle \"([^\"]*)\" pour la question (\\d+)$")
    public void laReponsePourLaQuestion(String reponseAdditionnelle, String questionAdditionnelle, int numQuestion) {
        questionnaireRepondu.addReponseAdditionnelle(numQuestion, questionAdditionnelle, reponseAdditionnelle);
    }
}
